﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using EventPlanner.Models;
using System.Web.Security;

namespace EventPlanner.Servicios
{
    /* Clase para cargar con datos iniciales la base de datos del proyecto,
     * si cambiamos el modelo, la base de datos se vuelve a crear */
    public class CargarDB : DropCreateDatabaseIfModelChanges<EventPlannerDB>
    {

        /* Datos iniciales de la base de datos */
        protected override void Seed(EventPlannerDB context)
        {
            base.Seed(context);


            /* Creamos 2 contactos */

            Contacto contacto1 = new Contacto
            {
                Nombre = "Juan",
                Email = "juan@hotmail.com",
                WebSiteUser = "sergio107"
            };
            Contacto contacto2 = new Contacto
            {
                Nombre = "Maria",
                Email = "maria@hotmail.com",
                WebSiteUser = "sergio107"
            };            
            Contacto contacto3 = new Contacto
            {
                Nombre = "Belen",
                Email = "belen@hotmail.com",
                WebSiteUser = "Diego"
            };

            /* Creamos 3 usuarios */

            /*  Creamos el usuario 1 */
            RegisterModel model = new RegisterModel();
            model.Email = "sergio_wang_yu@hotmail.com";
            model.Password = "sergio..";
            model.UserName = "sergio107";            
            MembershipCreateStatus createStatus;
            Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);            
            Usuario Usuario1 = new Usuario()
            {
                Nombre = "Sergio",
                Apellido = "Tacchetti",
                WebSiteUser = model.UserName,
                Email = model.Email,
                TelFijo = "4531786",
                Contactos = new List<Contacto>(),
                EventosInscriptos = new List<Evento>(),
                EventosCreados = new List<Evento>()
            };            
            if (createStatus == MembershipCreateStatus.Success)
            {
                //FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);                
                context.Usuarios.Add(Usuario1);
                context.SetActualUser(model.UserName);
            }

            /*  Creamos el usuario 2 */
            model.Email = "diego@hotmail.com";
            model.Password = "diego..";
            model.UserName = "Diego";
            Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);
            Usuario Usuario2 = new Usuario()
            {
                Nombre = "Diego",
                Apellido = "Perez",
                WebSiteUser = model.UserName,
                Email = model.Email,
                TelFijo = "4595100",
                Contactos = new List<Contacto>(),
                EventosInscriptos = new List<Evento>(),
                EventosCreados = new List<Evento>()
            };
            if (createStatus == MembershipCreateStatus.Success)
            {
                context.Usuarios.Add(Usuario2);
                context.SetActualUser(model.UserName);
            }

            /*  Creamos el usuario 3 */
            model.Email = "jorge@hotmail.com";
            model.Password = "jorge..";
            model.UserName = "jorge";
            Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);
            Usuario Usuario3 = new Usuario()
            {                
                Nombre = "Jorge",
                Apellido = "Garcia",
                Nacionalidad = "Argentino",
                Sexo = "masculino",
                WebSiteUser = model.UserName,
                Email = model.Email,                
                Celular = "155876925",
                Contactos = new List<Contacto>(),
                EventosInscriptos = new List<Evento>(),
                EventosCreados = new List<Evento>()
            };
            if (createStatus == MembershipCreateStatus.Success)
            {
                context.Usuarios.Add(Usuario3);
                context.SetActualUser(model.UserName);
            }
             

            /* Creamos 3 eventos */
            Evento evento1 = new Evento
            {                
                WebSiteUser = "sergio107",
                UsuariosInscriptos = new List<Usuario>(),
                Nombre = "Seminario de Seguridad en Redes",
                Inicio = DateTime.Parse("2015/5/5 4:30 PM"),
                Fin = DateTime.Parse("2015/5/5 6:30 PM"),
                NombreOrganizador = "Bahia-Net",
                Lugar = new Ubicacion
                {
                    altura = 115,
                    calle = "Saavedra",
                    ciudad = "Bahia Blanca",
                    estado = "Bs As",
                    pais = "Argentina"
                },
                TipoDeEntrada = "Sin Costo",
                CapacidadLimitada = true,
                CupoMaximo = 20,
                PoseeFechaLimiteInscrip = true,
                FechaLimiteInscrip = DateTime.Parse("2015/5/5 4:30 PM"),
                TelefonoOrganizador = "4531786",
                MailOrganizador = "bahia-net@bahianet.com",
                WebSiteOrganizador = "www.bahianet.com"
            };
            Evento evento2 = new Evento
            {
                WebSiteUser = "diego",
                UsuariosInscriptos = new List<Usuario>(),
                Nombre = "Curso avanzado de .NET",
                Inicio = DateTime.Parse("2015/5/5 2:30 PM"),
                Fin = DateTime.Parse("2015/11/5 6:30 PM"),
                NombreOrganizador = "Informática Bahia",
                Lugar = new Ubicacion
                {
                    altura = 132,
                    calle = "Av. Alem",
                    ciudad = "Bahia Blanca",
                    estado = "Bs As",
                    pais = "Argentina"
                },
                TipoDeEntrada = "Promocional",
                CapacidadLimitada = true,
                CupoMaximo = 30,
                PoseeFechaLimiteInscrip = true,
                FechaLimiteInscrip = DateTime.Parse("2015/5/5 4:30 PM"),
                TelefonoOrganizador = "4531786",
                MailOrganizador = "infomatica_bb@gmail.com",
                WebSiteOrganizador = "www.ibb.com.ar"
            };

            Evento evento3 = new Evento
            {
                WebSiteUser = "sergio107",
                UsuariosInscriptos = new List<Usuario>(),
                Nombre = "Jornadas de lógica, computación e IA",
                Inicio = DateTime.Parse("2015/7/7 2:30 PM"),
                Fin = DateTime.Parse("2015/11/5 6:30 PM"),
                NombreOrganizador = "Departamento de computacion UNS",
                Lugar = new Ubicacion
                {
                    altura = 1250,
                    calle = "Av. Alem",
                    ciudad = "Bahia Blanca",
                    estado = "Bs As",
                    pais = "Argentina"
                },
                TipoDeEntrada = "Sin Costo",
                CapacidadLimitada = true,
                CupoMaximo = 50,
                PoseeFechaLimiteInscrip = true,
                FechaLimiteInscrip = DateTime.Parse("2015/7/6 2:30 PM"),
                TelefonoOrganizador = "4564782",
                MailOrganizador = "computacion@cs.uns.edu.ar",
                WebSiteOrganizador = "cs.uns.edu.ar"
            };

            /* Agregamos los contactos 1 y 2 al usuario 1 */
            Usuario1.Contactos.Add(contacto1);
            Usuario1.Contactos.Add(contacto2);

            /* Agregamos el contacto 3 al usuario 2 */
            Usuario2.Contactos.Add(contacto3);


            /* El usuario 1 es el creador del evento 1 y el evento 3 */
            Usuario1.EventosCreados.Add(evento1);
            Usuario1.EventosCreados.Add(evento3);            
            context.SaveChanges();

            /* Al usuario 2 lo inscribimos al evento 1 y lo establecemos como creador del evento 2*/            
            Usuario2.EventosInscriptos.Add(evento1);
            Usuario2.EventosCreados.Add(evento2);

            /* Al usuario 3 lo inscribimos al evento 1 */
            Usuario3.EventosInscriptos.Add(evento1);



            /* Por ultimo creamos un usuario administrador*/
            model.Email = "admin@eventplanner.com";
            model.Password = "123456";
            model.UserName = "Admin";
            Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);
            Usuario Usuario4 = new Usuario()
            {
                Nombre = "Administrador",
                WebSiteUser = model.UserName,
                Email = model.Email,
                Contactos = new List<Contacto>(),
                EventosInscriptos = new List<Evento>(),
                EventosCreados = new List<Evento>()
            };
            if (createStatus == MembershipCreateStatus.Success)
            {
                context.Usuarios.Add(Usuario4);
                context.SetActualUser(model.UserName);
            }




        }
    }
}